/**
 * @Version :
 * @PROJECT_NAME: java-basics
 * @PACKAGE_NAME:PACKAGE_NAME
 * @NAME: Queue
 * @author:xuandian
 * @DATE: 2022/6/25 12:01
 * @description:
 */
public interface Queue<T> {
    /**
     * 加入失败抛出异常
     *
     * @param data
     * @return
     */

    boolean add(T data) throws Exception;


    /**
     * 加入失败返回false
     *
     * @param data
     * @return
     */
    boolean offer(T data);

    /**
     * 移除队首 如果队列空则抛出异常
     * @return
     */
    T remove();

    /**
     * 移除队首
     * @return
     */
    T poll();

    /**
     * 取得队首元素
     * @return
     */
    T element();

    /**
     * 取得队首元素如果队列为空则抛出异常
     * @return
     */
    T peek();

    /**
     * 判单大小
     * @return
     */

    int size();

}
